/* -------------------------------------------------------------------
 *    Application class for RubiksCube
 *
 *    $File: RubiksCubeModel.h
 *    $Date: 2013/01/31 $
 *    $Revision: #1 $
 * -------------------------------------------------------------------*/
#ifndef RUBIKSCUBEENGINE
#define RUBIKSCUBEENGINE

#include <vlgGlutEngine.h>
#include "RubiksCubeModel.h"
#include "RubiksCubeView.h"

//! controler for RubiksCube
class RubiksCubeEngine : public vlgGlutEngine
{
public:
	//! get instance of class RubiksCubeEngine (singleton)
	static RubiksCubeEngine* Instance(void);
	//! initialize OpenGL basics
	void initContext(void);
	//! assign keys and actions
	void keyboard(unsigned char key, int x, int y);
	//! dumps info text in console
	void about(void);

private:
	//! model of RubiksCube
	RubiksCubeModel model;
	//! view of RubiksCube
	RubiksCubeView view;
	//! instance var (singleton)
	static RubiksCubeEngine* instance;
	//! private c'tor (singleton)
	RubiksCubeEngine(void);
};

#endif // RUBIKSCUBEENGINE